class Solution {
public:
    double myPow(double x, int n) {
        int flag=0;
        if(n==-2147483648){
            n++;
            if(x<0){
                flag=1;
            }
        }
        if(n<0){
            n=-n;
            x=1.0/x;
        }
        if(n==0){
            return 1.0;
        }
        if(n==1){
            return x;
        }
        if(n%2==0){
            return myPow(x*x,n/2);
        }
        if(flag==0){
            return x*myPow(x*x,n/2);
        }else{
            return -x*myPow(x*x,n/2);
        }
        
    }
};